GtkWindow: fix an init/finalize asymmetry
authorMatthias Clasen <mclasen@redhat.com>
Tue, 13 Aug 2013 21:44:04 +0000 (17:44 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 13 Aug 2013 21:44:04 +0000 (17:44 -0400)
Make sure we always deal with the same screen when
connecting / disconnecting the theme-variant changed handler.
Pointed out by Morten Welinder in
https://bugzilla.gnome.org/show_bug.cgi?id=705640

gtk/gtkwindow.c

index a0c0cc6ed3549a0329bb81b4ebe11254482c689a..a74ab7e995350232c29af5812de806d2e1288b86 100644 (file)
@@ -5005,8 +5005,15 @@ gtk_window_finalize (GObject *object)
     }
 
   if (priv->screen)
-    g_signal_handlers_disconnect_by_func (priv->screen,
-                                          gtk_window_on_composited_changed, window);
+    {
+      g_signal_handlers_disconnect_by_func (priv->screen,
+                                            gtk_window_on_composited_changed, window);
+#ifdef GDK_WINDOWING_X11
+      g_signal_handlers_disconnect_by_func (gtk_settings_get_for_screen (priv->screen),
+                                            gtk_window_on_theme_variant_changed,
+                                            window);
+#endif
+    }
 
   g_free (priv->startup_id);
 
@@ -5016,12 +5023,6 @@ gtk_window_finalize (GObject *object)
       priv->mnemonics_display_timeout_id = 0;
     }
 
-#ifdef GDK_WINDOWING_X11
-  g_signal_handlers_disconnect_by_func (gtk_settings_get_default (),
-                                        gtk_window_on_theme_variant_changed,
-                                        window);
-#endif
-
   G_OBJECT_CLASS (gtk_window_parent_class)->finalize (object);
 }